/*
 * JavaScripts
 * validaciones de las pantallas
 */

function limpiar(obj) {
  obj.style.backgroundColor= "#FFF";
}


/*
   De no tener opcion seleccionada le cambia el fondo a amarillo y le da el foco
*/
function validarCombo(combo) {
   if(combo.selectedIndex <= 0) {
      combo.style.background ="#FFFF00";
      combo.focus();
      return false;
   }
   return true;
}


/*
   Click en submit oculto cuyo styleId
*/
function consultarOculto(nombreBotonOculto){
  document.getElementById("submitConsultar").click();
}


function validarTexto(texto) {
   if(texto.value==null || texto.value == "") {
      texto.style.background ="#FFFF00";
      texto.focus();
      return false;
   }
   return true;
}

/*
   1) Avance 100 % y Costo Real > Costo Planificado = Rojo
   2) Avance 100 % y Costo Real <= Costo Planificado = verde
   3) 0 < Avance < 100 = Amarillo
   4) Avance = 0   Blanco


funcition pintaFila(controlAvance){
  if(controlAvance.avance = 100 && costoReal > CostoPlanificado){
     controlAvance.style.background = Rojo;
     return true;
  }


  if(controlAvance.avance = 100 && costoReal <= CostoPlanificado){
     controlAvance.style.background = verde;
     return true;
  }

  if(controlAvance.avance > 0 && controlAvance.avance < 100){
    controlAvance.style.background = amarillo;
    return true;
  }

  if(controlAvance.avance = 0){
    return true;
  }

  return false;
}

*/

// Manejo de fechas y visualizacion para las peticiones

   function loadFechas(id) {
      var select = document.getElementById("cmbFechas");
      if(select == undefined) return;
      if(isNaN(id)) id=0;
      var hoy = Now();

      removeAllChildNodes(select);
      while(Date.compare(hoy,peticiones[id]) >= 0) {

         addOption(select, hoy.format("%DD-%MM-%YYYY"));
         hoy._subtractDays(1);
      }
      select.selectedIndex=0;
   }

   function loadVisualizaciones(id){
      var select = document.getElementById("cmbVis");
      if(select == undefined) return;
      if(isNaN(id)) id=0;
      var hoy = Now();
      removeAllChildNodes(select);
      // opciones fijas
      addOption(select, "Todo");
      addOption(select, "Semana Actual");

      // opciones dinamicas
      for(var i=1;Date.compare(hoy, peticiones[id])>=0; i++) {

         addOption(select, i + " semana");
         hoy._subtractWeeks(1);
      }
      select.selectedIndex=0;
   }

   function loadOptions(id) {
      loadVisualizaciones(id);
      loadFechas(id);
   }


// coordina los scroll de carga de horas unificadas
function cambiar(fuente) {
	document.getElementById('cuadrante_autonomo').scrollTop = fuente.scrollTop;
	document.getElementById('cuadrante_dueno').scrollLeft = fuente.scrollLeft;
}


/* Genericos */


function insertOption(select, text, optValue){
   var opt = Builder.node('option', {value:optValue},[text]);
   select.insertBefore(opt, select.options[0])
}


function addOption(select, text) {
   var opt = Builder.node('option',[text]);
   select.appendChild(opt);
}

function removeAllChildNodes(obj) {
   while(obj.hasChildNodes()) {
      obj.removeChild(obj.firstChild)
   }
}

function deshabilitarNoNumericos(evt){
   var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
   if ((charCode > 45 && charCode < 58) || // numeros y del (punto es igual al del)
        (charCode == 44) || // coma
        (charCode == 13) || // enter
        (charCode > 36 && charCode < 40) || // flechas
        (charCode > 7 && charCode < 10)) // back y tab
      {
      return true;
   } else {
       return false;
   }
}
  
  
  
 function cleanHtmlSelect(select) {
	var length = select.options.length;
	for(var i=0; i < length; i++) {
    	select.remove(1);
    }
}

function fillHtmlSelect(select, nodeList, allLetter) {
	for(var i=1; i<nodeList.length; i++) {
    	select.options[i] = new Option(nodeList[i].getAttribute("name"), nodeList[i].getAttribute("value"));
    }
}




function resetSelectAndEnabled(select) {
	select.selectedIndex=0;
	select.disabled=false;
}

function resetSelectAndDisable(select) {
	select.selectedIndex=0;
	select.disabled=true;
}

function resetAndDisableAllSelects(selects) {
	if(selects) {
		for(var i=0; i<selects.length; i++) {
			selects[i].selectedIndex=0;
			selects[i].disabled=true;
		}
	}
} 
  

function deshabilitarCombosPeticionRecurso() {
	var comboPeticion = document.getElementById('cmbPeticion');
	var comboProyecto = document.getElementById('cmbProyecto');
	var comboRecurso = document.getElementById('cmbRecurso');
	
	if( comboProyecto.selectedIndex==""){
				comboPeticion.selectedIndex=0;
				comboPeticion.disabled=true;
				comboRecurso.selectedIndex=0;
				comboRecurso.disabled=true;
	}
	if(comboPeticion.selectedIndex==""){
				comboRecurso.selectedIndex=0;
				comboRecurso.disabled=true;
	}	
}  

///Llamadores a AJAX

function peticionFunc() {
  	var selectPeticion = document.getElementById('cmbPeticion');
	var selectProyecto = document.getElementById('cmbProyecto');
	var selects = new Array();
	var url = "cargarPeticionAjax.do?proyectoId="+ selectProyecto.value;
	
	selects[0]=document.getElementById('cmbRecurso');
	selects[1]=document.getElementById('cmbPeticion'); 

 
	resetAndDisableAllSelects(selects);
	
	loadXmlDoc(url, handlerPeticion);
}


function peticionFuncUnificada() {
  	var selectPeticion = document.getElementById('cmbPeticion');
	var selectProyecto = document.getElementById('cmbProyecto');
	var selects = new Array();
	var url = "cargarPeticionAjax.do?proyectoId="+ selectProyecto.value;
	
	selects[0]=document.getElementById('cmbVis');
	selects[1]=document.getElementById('cmbPeticion'); 

 
	resetAndDisableAllSelects(selects);
	
	loadXmlDoc(url, handlerPeticion);
		
}
function importacionFunc() {
  	var archivo = document.getElementById('archivoId');
	var selectProyecto = document.getElementById('cmbProyecto');
	var nombrePeticion = document.getElementById('nombrePeticionId');
	
	var url = "importarProyectoAjax.do?proyectoId="+ selectProyecto.value+"&nombrePeticion="+nombrePeticion.value+"&archivo="+archivo.value ;
	
	//Cambiar el handler de respuesta de ajax
	loadXmlDoc(url, handlerNada);
	
	
}


function guardarEstadoImportacionFunc(estado) {
  	
  	var archivo = document.getElementById('archivoId');
	var selectProyecto = document.getElementById('cmbProyecto');
	var nombrePeticion = document.getElementById('nombrePeticionId');
	
	var url = "guardarEstadoImportacionAjax.do?estado="+estado;
	
	//Cambiar el handler de respuesta de ajax
	loadXmlDoc(url, handlerImportacion);
	
	
}
  
  
  
///Funciones AJAX
  
var xmlHttp;
function getXmlHttpRequest() {
 	var xmlHttp = null;
	try {
	  //Firefox, Opera 8.0+, Safari
	  xmlHttp=new XMLHttpRequest();
	}catch (e) {
	  // Internet Explorer
	  try {
	    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	  }catch (e) {
	  
	    try {
	      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	      xmlHttp.overrideMimeType("text/xml");
	    }catch (e) {
	      alert("Your browser does not support AJAX!");
      	}
   	  }
  	}
	return xmlHttp;
 }
 
 function loadXmlDoc(url, handler) {
 	xmlHttp = getXmlHttpRequest();
 	xmlHttp.onreadystatechange = function(){
		if(xmlHttp.readyState == 4){
	      if(xmlHttp.status == 200 && xmlHttp.responseXML){
	        handler(xmlHttp.responseXML);
	      }
		}
	}
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
 }
 
 //Handler de respuesta de AJAX
  
 function handlerPeticion(responseXML) {
	var selectRegion = document.getElementById('cmbPeticion');
    var xmldoc = responseXML.documentElement;
	cleanHtmlSelect(selectRegion);
	fillHtmlSelect(selectRegion, xmldoc.getElementsByTagName("peticion"), "a");
	selectRegion.disabled=false;
  }
  
  function handlerNada(responseXML) {
	
	
  }
  
 function handlerImportacion(responseXML) {
	var importacionTag = document.getElementById('variableImportacionId');
    var xmldoc = responseXML.documentElement;
	fillHtmlHidden(importacionTag, xmldoc.getElementsByTagName("peticion") );
	
	
  }
  
	function fillHtmlHidden(tag, nodeList) {
    	tag.value = nodeList[0].getAttribute("value");
	}
	
	
///Mensaje de Importacion
	
	  var timerID = 0;
      var numeroPuntos = 1;
      var maxPuntos = 3;
     
     function llamadorImportando(){
     	document.getElementById('variableImportacionId').value="importando";
     	importando();
     
     }
     
     
    
     
 
  	function importando() {
     	var tiempoDeEspera= 1000;
        var textoImportando = document.getElementById('importandoId').value;
    	var textoImportacionOk=  document.getElementById('importacionOkId').value;
    	var textoImportacionNok= document.getElementById('importacionNokId').value;
    	var importacion = document.getElementById('variableImportacionId').value;
        var puntos = "";
        for(i=0;i<numeroPuntos;i++) {
          puntos += ".";
        }
        if (numeroPuntos++ >= maxPuntos) {
          numeroPuntos = 0;
        }
        document.getElementById("estadoImportacionId").innerHTML = textoImportando + puntos;
        
      
        if(importacion=="none"){
        	document.getElementById("estadoImportacionId").innerHTML = "";
        }
        if(importacion=="estadoImportacionOK"){
        	clearTimeout(timerID);
        	document.getElementById("estadoImportacionId").innerHTML= textoImportacionOk;
        	guardarEstadoImportacionFunc("none");
        }
        if(importacion=="estadoImportacionNOK"){
        	clearTimeout(timerID);
        	document.getElementById("estadoImportacionId").innerHTML = textoImportacionNok;
        	guardarEstadoImportacionFunc("none");         	
        }
        if(importacion=="importando"){
        	//funcion AJAX
        	guardarEstadoImportacionFunc("");
        	timerID = setTimeout("importando()", tiempoDeEspera);
        }   
     }
